/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 22652
 * Date: 2024-04-28
 * Time: 12:24
 */
public class txt{

    public static void main(String[] args) {
        //删除k个数字后的最小值
        System.out.println(removeKDigits("541270936",3));
    }

    private static String removeKDigits(String num, int k) {
        //新整数的最终长度 = 原长度 - k;
        int newLength=num.length()-k;
        //创建一个栈，用于接收所有的数字
        char[] stack=new char[num.length()];
        int top=0;
        for (int i=0;i<num.length();i++){
            //遍历当前数字
            char c=num.charAt(i);
            //当栈顶数字大于遍历道德当前数字时，栈顶数字出栈(相当于删除数字)
            while (top>0 && stack[top-1]>c && k>0){
                top--;
                k--;
            }
            //遍历到的当前数字入栈
            stack[top++]=c;
        }
        //找到栈中第一个非0数字的位置，以此构建新的整数字符串
        int offset=0;
        while (offset<newLength && stack[offset]=='0'){
            offset++;
        }
        return offset==newLength?"0":new String(stack,offset,newLength-offset);
    }
}